module.exports = {
  // 开启构建缓存，加快后续构建速度
  build: {
    cache: true, 
    // 扩展 Webpack 配置
    extend(config, { isDev, isClient }) {
      // 在开发环境且客户端构建时添加 ESLint 检查
      if (isDev && isClient) {
        config.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /(node_modules)/
        });
      }

      // 开启并行构建，提高构建速度
      if (isDev && isClient) {
        const vueLoader = config.module.rules.find(rule => rule.loader === 'vue-loader');
        if (vueLoader && Array.isArray(vueLoader.use)) {
          vueLoader.use.unshift({
            loader: 'thread-loader',
            options: {
              // 使用 CPU 核心数减 1 个线程进行并行处理
              workers: require('os').cpus().length - 1 
            }
          });
        }
      }
    }
  },

  // 配置插件
  plugins: [
    // 引入 nuxt-swiper-plugin 插件，且仅在客户端使用
    { src: '~/plugins/nuxt-swiper-plugin.js', ssr: false } 
  ],

  // 配置全局 CSS 文件
  css: [
    // 引入 Swiper 插件的 CSS 文件
    'swiper/dist/css/swiper.css' 
  ],

  // 配置页面头部信息
  head: {
    title: '在线教育平台',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '{{escape description }}' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },

  // 配置加载进度条颜色
  loading: { color: '#3B8070' },

  // 禁用资源预加载提示，在开发环境减少不必要的请求
  render: {
    resourceHints: false 
  },

  // 开发服务器配置
  server: {
    // 开发服务器监听的主机地址
    host: '0.0.0.0', 
    // 开发服务器监听的端口号
    port: 3000 
  }
};